/**
 * @author 侯非
 * @date 2009年4月3日
 * @class MoneyPaymentGridPanel
 * @extends Ext.grid.GridPanel
 */
MoneyPaymentGridPanel = Ext.extend(Ext.grid.GridPanel, {
	myid : "default",
	checkWin : null,// 薪酬发放单审核窗体
	/**
	 * 构造方法
	 */
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		// 薪酬发放单审核窗体
		this.checkWin = new CheckMoneyPaymentWindow();
		// 数据存贮器
		this["store"] = new Ext.data.JsonStore({
					url : "moneyPayment.do?operator=showMoneyPaymentByPage",
					method : "post",
					totalProperty : "totalCount",
					root : "rows",
					fields : ["mpaUniqueId", "pfName", "personfile.pfIdCard",
							"pfFileId", "mpaAddDate", "miCountMoney",
							"mpaFactMoney", "mpaState",
							"personfile.miCountMoney"]
				});
		/**
		 * 拷贝父类的构造
		 */
		MoneyPaymentGridPanel.superclass.constructor.call(this, {
			id : this.myid,
			border : false,
			autoScroll : true, // 自动滚动条
			stripeRows : true, // 交替行效果
			viewConfig : {
				forceFit : true
			},
			columns : [new Ext.grid.CheckboxSelectionModel({
								header : ""
							}), {
						header : "薪酬发放单号",
						sortable : true,
						dataIndex : "mpaUniqueId",
						renderer : this.myRenderer,
						scope : this
					}, {
						header : "姓名",
						sortable : true,
						dataIndex : "pfName",
						renderer : this.myRenderer,
						scope : this
					}, {
						header : "身份证号",
						sortable : true,
						dataIndex : "personfile.pfIdCard",
						renderer : this.myRenderer,
						scope : this
					}, {
						header : "档案编号",
						sortable : true,
						dataIndex : "pfFileId",
						renderer : this.myRenderer,
						scope : this
					}, {
						header : "登记时间",
						sortable : true,
						dataIndex : "mpaAddDate",
						renderer : function(_v) {
							var _value = Ext.util.Format.substr(_v, 0, 10);
							var _sdate = new Date();
							_sdate = Date.parseDate(_value, "Y-m-d");
							var _date = Ext.util.Format.date(_sdate, "Y年m月d日");
							return _date;
						}
					}, {
						header : "应发金额",
						sortable : true,
						dataIndex : "miCountMoney",
						renderer : this.myRendererOfMoney,
						scope : this
					}, {
						header : "实发金额",
						sortable : true,
						dataIndex : "mpaFactMoney",
						renderer : this.myRendererOfMoney,
						scope : this
					}, {
						header : "审核状态",
						sortable : true,
						dataIndex : "mpaState",
						renderer : function(_v) {
							if (_v == "通过审核") {
								return "<img src='images/icons/drop-yes.gif' ext:qtip='通过审核' />";
							} else {
								return "<img src='images/icons/drop-no.gif' ext:qtip='未审核' />";
							}
						}
					}],
			selModel : new Ext.grid.RowSelectionModel({
						// 单行选择模式
						singleSelect : true
					}),
			// 填充加载时间
			loadMask : {
				msg : "正在加载数据,请稍候......"
			},
			tbar : new Ext.Toolbar({
						style : "padding:5px;",
						items : ["人员姓名：", {
									xtype : "textfield"
								}, "-", "登记时间：", {
									xtype : "datefield",
									format : "Y年m月d日",
									width : 120,
									readOnly : true
								}, "-", {
									text : "查询",
									iconCls : "houfei-searchIcon",
									handler : this.onSearch,
									scope : this
								}, "-", {
									text : "清空查询条件",
									iconCls : "houfei-closeCurrentTab",
									handler : this.onClearCondition,
									scope : this
								}]
					}),
			// 分页工具条
			bbar : new Ext.PagingToolbar({
				store : this["store"], // 数据存储器
				pageSize : 17, // 页大小
				displayMsg : "共<font color=\"green\"> {2} </font>条记录,当前页记录索引<font color=\"green\"> {0} - {1}</font>&nbsp;&nbsp;&nbsp;",
				displayInfo : true,
				items : ["-", {
							text : "审核",
							iconCls : "houfei-checkIcon",
							tooltip : "选择一条薪酬发放单信息进行审核",
							handler : this.onCheckMoneyPayment,
							scope : this
						}]
			})

		});
		// 加载数据
		this.getStore().load({
					params : {
						start : 0,
						limit : 17
					}
				});

		// 监听checkWin的onCheckWinSubmitSuccess(审核成功回调函数)事件
		this.checkWin.on("onCheckWinSubmitSuccess",
				this.onCheckWinSubmitSuccess, this);
	},

	/**
	 * @scope private
	 * @title 表格单元格提示信息方法
	 * @param {}
	 *            _v
	 */
	myRenderer : function(_v) {
		return "<span ext:qtip=" + _v + ">" + _v + "</span>";
	},

	/**
	 * @scope private
	 * @title 表格单元格提示信息方法(格式化金额)
	 * @param {}
	 *            value
	 */
	myRendererOfMoney : function(value) {
		// 美国货币样式
		var _usaMoney = Ext.util.Format.usMoney(value);
		// 中国货币样式
		var _chinaMoney = Ext.util.Format
				.substr(_usaMoney, 1, _usaMoney.length);
		return "<img src='images/icons/money.png' /><span style='color:red;' ext:qtip=￥"
				+ value + ">" + _chinaMoney + "</span>";
	},

	/**
	 * 审核成功回调函数
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onCheckWinSubmitSuccess : function(_form, _action) {
		this.checkWin.onClose();
		this.getStore().reload();
	},

	/**
	 * 清空查询条件按钮单击事件
	 */
	onClearCondition : function() {
		// 获取top工具条
		var _tbar = this.getTopToolbar();
		// 获取text框的值
		var _name = _tbar.items.get(1).setValue("");
		// 获取dateField框的值(Date类型)
		var _dtxt = _tbar.items.get(4).setValue("");
	},

	/**
	 * 查询按钮单击事件
	 */
	onSearch : function() {
		// 获取top工具条
		var _tbar = this.getTopToolbar();
		// 获取text框的值
		var _name = _tbar.items.get(1).getValue();
		// 获取dateField框的值(Date类型)
		var _dtxt = _tbar.items.get(4).getValue();
		var _sdate = new Date(_dtxt);
		// 获取日期(String)
		var _date = null;
		if (_dtxt != null && _dtxt != "") {
			_date = _sdate.format("Y-m-d");
		}
		/**
		 * 给当前表格的数据源添加请求参数
		 */
		this.getStore().baseParams = {
			addDate : _date,
			name : _name
		};
		/**
		 * 重新加载数据
		 */
		this.getStore().load({
					params : {
						start : 0,
						limit : 17
					}
				});
	},

	/**
	 * 审核薪酬发放单按钮单击事件
	 */
	onCheckMoneyPayment : function() {
		// 获取当前表格的行选择模式
		var _sm = this.getSelectionModel();
		if (_sm.getCount() > 0) {
			// 重置窗体表单
			this.checkWin.myForm.getForm().reset();
			// 显示窗体
			this.checkWin.show();
			// 获取表格选择的当前行的记录集
			var _r = _sm.getSelected();
			Ext.Ajax.request({
				url : "moneyPayment.do?operator=getMoneyPaymentDetailsByUniqueProperty",
				method : "post",
				success : this.onRequestSuccess,
				failure : this.onRequestFailure,
				scope : this,
				params : {
					mpaUniqueId : _r.get("mpaUniqueId")
				}
			});
		} else {
			Ext.Msg.show({
						title : "系统提示",
						msg : "请您选择一条您要审核的薪酬发放信息!",
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.INFO
					});
		}
	},

	/**
	 * Ajax请求成功回调函数
	 */
	onRequestSuccess : function(_res) {
		// 获取当前表格的行选择模式
		var _sm = this.getSelectionModel();
		// 获取表格选择的当前行的记录集
		var _sr = _sm.getSelected();
		// 将服务端返回的json数据反序列化成json对象
		var _restxt = Ext.decode(_res.responseText);
		// 重构一个record,用来解析服务端返回的数据
		var _r = new Ext.data.Record(_restxt);
		// 重构一个record,用来为审核窗体的myForm对象加载数据
		var _nr = new Ext.data.Record({
					"mpaUniqueId" : _sr.get("mpaUniqueId"),
					"pfName" : _sr.get("pfName"),
					"pfFileId" : _sr.get("pfFileId"),
					"personfile.miCountMoney" : _sr.get("personfile.miCountMoney"),
					// 奖励金额
					"mpd.mpdBounsMoney" : _r.get("mpdBounsMoney"),
					// 绩效金额
					"mpd.mpdTaskMoney" : _r.get("mpdTaskMoney"),
					// 扣除金额
					"mpd.mpdDeductMoney" : _r.get("mpdDeductMoney"),
					// 奖励说明
					"mpd.mpdBounsMemo" : _r.get("mpdBounsMemo"),
					// 扣除说明
					"mpd.mpdDeductContent" : _r.get("mpdDeductContent")
				});
		// 加载数据
		this.checkWin.myForm.getForm().loadRecord(_nr);
	},
	/**
	 * Ajax请求失败回调函数
	 */
	onRequestFailure : function(_res) {
		Ext.Msg.alert("系统消息", "网络异常,请检查网络是否正常或与管理员联系!");
	}
});